<?php
//$logstat = 1;     // 1 ej loggad, 2 inloggad, 3 timeout, 4 fel lösen, 5 utloggad av anv�daren
$timeout = 10*60; // 10min
$loginpage = "index.php"; // sida att hoppa till för att logga in

//Do
//session_start();

// functions


function auth_pass( $user, $pass )
{
	//tillåt inloggning med root eller admin
	if( $user != 'root' && $user != 'admin')
		return false;
		
	$shadow_file = file_get_contents( '/etc/shadow' );

	if( !preg_match( '/^root:.+/' , $shadow_file, $matches ) )
		die("\nNågot är väldigt fel"); //hitta inte användaren i filen
	$shadow_arr = explode(':', $matches[0]);
	$saved_crypt = $shadow_arr[1];
	
	$salt = substr( $saved_crypt, 0, 12 );
	$crypt = crypt( $pass, $salt );

	if( $crypt == $saved_crypt )
		return true;
	else
		return false;
}

function save_pass( $user, $pass )
{
	//tillåt inloggning med root eller admin
	if( $user != 'root' && $user != 'admin')
		return false;
	
	$shadow_file = file_get_contents( '/etc/shadow' );

	if( !preg_match( '/^root:.+/' , $shadow_file, $matches ) )
		die("\nNågot är väldigt fel"); //hitta inte användaren i filen
	$shadow_arr = explode(':', $matches[0]);
	$saved_crypt = $shadow_arr[1];

	$salt = substr( $saved_crypt, 0, 12 );
	$crypt = str_replace( '/', '\/', crypt( $pass, $salt) );

	$output = array();
	exec('sed -r -e s/^root:[^:]+/\'root:'.$crypt.'\'/ /etc/shadow', $output, $out);
	if( !$out )
		return @file_put_contents('/etc/shadow', join("\n", $output) );
	else
		return false;
}


function authorize()
{
	if($_COOKIE["PHPSESSID"]) {
		session_id($_COOKIE["PHPSESSID"]);
		session_start();
		global $timeout;
		if(session_is_registered("time") && $_SESSION["ip"] == getenv("REMOTE_ADDR")) {   //Om tidigare inloggad
			if($_SESSION["time"] + $timeout >= time()) {         //Kontrollerar om timeout
				$_SESSION["time"] = time();
				return 0;//inloggad
			}
			else {
				return 2;//timeout
			}
		}
	}
	return 1; //ej loggad
}


function login($user, $pass)  //visa loginfönstret
{
	if($user) {
		if( auth_pass( $user, $pass ) ) {
			if ($_COOKIE["PHPSESSID"])
				session_id($_COOKIE["PHPSESSID"]);
			session_start();
			header("Set-Cookie: " . SID . "; path=/");
			header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
			#echo "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\n";
			#echo "Pragma: no-cache\n";
			$_SESSION["user"] = $user;
			$_SESSION["time"] = time();
			$_SESSION["ip"] = getenv("REMOTE_ADDR");
			return 0;   //loggat in
		}
		else {
			return 3;   //fel lösen
		}
	}
	else {
		return 3;   //fel lösen
	}
}

function logout()
{
	global $loginpage;
	$stat = authorize();
		//ej inloggad, gå till startsida utan felmeddelande
	if ($stat != 0) {
		header("Location: $loginpage");
		exit();
	}

	//inloggad, plocka bort session och skicka till inloggning
	session_unset();
	session_destroy();
	header("Location: $loginpage?l=4");
	exit();
}
?>
